// InitFunction.cpp: implementation of the InitFunction class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "phsshare.h"
#include "InitFunction.h"
#include "Part.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

IMPLEMENT_DYNAMIC_CREATE(InitFunction, FunctionObject, FunctionObject::eINITFUNCTION);

InitFunction::InitFunction()
{

}

InitFunction::~InitFunction()
{
	for(int i = 0; i < m_theInitValues.GetSize(); i++)
	{
		delete m_theInitValues.GetAt(i);
	}
	m_theInitValues.RemoveAll();
}

void InitFunction::Add(const CString& strSymbol, const CString& strValue)
{
	ASSERT(!strValue.IsEmpty());

	Pair* pPair = new Pair;
	ASSERT(pPair);
	pPair->strSymbol = strSymbol;
	pPair->strValue = strValue;

	m_theInitValues.Add(pPair);
}

BOOL InitFunction::Execute()
{
	ASSERT(this->GetOwner());
	GetOwner()->CloseGetPropertyTrigger();
	for(int i = 0; i < m_theInitValues.GetSize(); i++)
	{
		Pair* pPair = m_theInitValues.GetAt(i);
		ASSERT(pPair);
		this->GetOwner()->SetVariableValue(pPair->strSymbol, pPair->strValue);
	}
	GetOwner()->OpenGetPropertyTrigger();
	GetOwner()->RunGetPropertyTrigger();
	
	return TRUE;
}